package com.zhangye.test.service;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;

import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import com.zhangye.test.mapper.ArCommentMapper;
import com.zhangye.test.mapper.CategoryMapper;
import com.zhangye.test.mapper.CompanyMapper;
import com.zhangye.test.mapper.InterviewMapper;
import com.zhangye.test.mapper.ProxyQrCodeMapper;
import com.zhangye.test.mapper.RegionMapper;
import com.zhangye.test.mapper.ScanCountMapper;
import com.zhangye.test.mapper.SearchLogMapper;
import com.zhangye.test.model.Admin;
import com.zhangye.test.model.ProxyQrCode;
import com.zhangye.test.util.AddressUtil;
import com.zhangye.test.util.PageInfo;
import com.zhangye.test.util.Result;

/**
 * proxyQrCode
 * 作者： 张叶
 * 创建时间：2018年5月11日  上午11:56:04
 */
@Service
public class ProxyQrCodeService {
	
	@Autowired
	private ProxyQrCodeMapper proxyQrCodeMapper;
	@Autowired
	private QiniuService qiniuService;
	@Autowired
	private CompanyMapper companyMapper;
	@Autowired
	private InterviewMapper interviewMapper;
	@Autowired
	private ArCommentMapper arCommentMapper;
	@Autowired
	private ScanCountMapper scanCountMapper;
	@Autowired
	private AdminService adminService;
	@Autowired
	private SearchLogMapper searchLogMapper;
	@Autowired
	private RegionMapper regionMapper;
	@Autowired
	private CategoryMapper categoryMapper;
	@Autowired
	private HttpSession session;

	
	/**
	 * 添加
	 * 作者： 张叶
	 * 创建时间：2019年7月8日  上午9:30:00
	 */
	@Transactional
	public Result add (MultipartFile videoUrls,ProxyQrCode pqc){
		Result result = new Result();
		if(!videoUrls.isEmpty()){
			Admin a = (Admin)session.getAttribute("currentUser");
			if(a != null && !"".equals(a)){
				pqc.setAdminId(a.getId());
				//视频链接
				try{
					String video = qiniuService.upload("file", videoUrls.getOriginalFilename(),videoUrls.getBytes());
					pqc.setVideoUrl(video);
				}catch(Exception e){
					result.code = 1;
					result.message = "系统错误，添加失败";
				}
				try{
					pqc.setCreatedAt(new Date());
					pqc.setStatus("on");
					proxyQrCodeMapper.insert(pqc);
					pqc.setQrCode("https://ar.zhyell.com/api/QrCode/create1/" + pqc.getId());
					proxyQrCodeMapper.updateByPrimaryKey(pqc);
				}catch(Exception e){
					result.code = 1;
					result.message = "系统错误，添加失败";
				}
			}else{
				result.code = 2;
				result.message = "当前登录已失效，请重新登录";
			}
		}else {
			result.code = 3;
			result.message = "请上传视频";
		}
		return result;
	}
	
	
	/**
	 * 修改参数
	 * 作者： 张叶
	 * 创建时间：2018年8月31日  下午2:03:29
	 */
	public int updateNormal(ProxyQrCode pqc){
		int flag = proxyQrCodeMapper.updateByPrimaryKey(pqc);
		return flag;
	}


	/**
	 * 修改视频
	 * 作者： 张叶
	 * 创建时间：2019年7月8日  上午9:49:53
	 */
	@Transactional
	public int updateVideoUrl(Long proxyQrCodeId, MultipartFile trackingImage)
			throws Exception {
		int i = 0;
		ProxyQrCode pqc = proxyQrCodeMapper.selectByPrimaryKey(proxyQrCodeId);
		if (pqc != null && !"".equals(pqc)) {
			String videoUrl = qiniuService.upload("file",
					trackingImage.getOriginalFilename(),
					trackingImage.getBytes());
			pqc.setVideoUrl(videoUrl);
			i = proxyQrCodeMapper.updateByPrimaryKey(pqc);
		}
		return i;
	}

	
	/**
	 * 查找
	 * 作者： 张叶
	 * 创建时间：2018年5月23日  上午9:05:58
	 */
	public ProxyQrCode selectByPrimaryKey(Long id ){
		ProxyQrCode pqc= proxyQrCodeMapper.selectByPrimaryKey(id);
		return pqc;
	}
	
	
	public List<ProxyQrCode> selectAll(){
		List<ProxyQrCode> list = proxyQrCodeMapper.selectAll();
		return list;
	}
	
	
	public List<ProxyQrCode> selectByWhere(String where){
		List<ProxyQrCode> list = proxyQrCodeMapper.selectByWhere(where);
		return list;
	}

	
	/**
	 * 列表
	 * 作者： 张叶
	 * 创建时间：2018年5月23日  上午9:05:40
	 */
	public List<Map<String,Object>> selectByPage(PageInfo pageInfo, String where, String order) {
		Map<String, Object> param = new HashMap<String, Object>();
		param.put("myCount", pageInfo.getCount());
		param.put("pageSize", pageInfo.getPageSize());
		param.put("page", pageInfo.getPage());
		param.put("where", where);
		param.put("order", order);
		List<Map<String, Object>> m = proxyQrCodeMapper.selectByPage(param);
		pageInfo.setCount(Integer.parseInt(param.get("myCount").toString()));
		return m;
	}
	
	

	
	/**
	 * 获取经纬度
	 * 作者： 张叶
	 * 创建时间：2018年8月23日  上午9:18:35
	 */
	public String getAddress(String lat, String lng) {
		String region = "";
		try {
			region = AddressUtil.getRegionByLocation(String.format("%s,%s", lng, lat));
		} catch (Exception e) {
			region = "河北省石家庄市";
		}
		return region;
	}
	
	/**
	 * 转Base64
	 * 作者： 张叶
	 * 创建时间：2018年5月15日  下午2:11:11
	 */
	public static String encode(final byte[] bytes) {  
		return new String(Base64.encodeBase64(bytes));  
	}	
	
	
	/**
	 * 删除
	 * 1，删除EasyAR
	 * 2，删除数据库表
	 * 3，删除评论
	 * 4，删除扫描
	 * 作者： 张叶
	 * 创建时间：2018年5月16日  上午10:00:37
	 * @throws Exception 
	 */
	@Transactional
	public int deleted(Long id) throws Exception{
		int flag = 0;
		ProxyQrCode pqc = proxyQrCodeMapper.selectByPrimaryKey(id);
		//删除视频
		pqc.setStatus("deleted");
		flag = proxyQrCodeMapper.updateByPrimaryKey(pqc);
		return flag;
	}
	
	
	/**
	 * 修改
	 * 作者： 张叶
	 * 创建时间：2018年5月23日  上午10:11:26
	 */
	public int update(ProxyQrCode pqc){
		int flag = 1;
		ProxyQrCode proxyar = proxyQrCodeMapper.selectByPrimaryKey(pqc.getId());
		proxyar.setName(pqc.getName());
		if(proxyQrCodeMapper.updateByPrimaryKey(proxyar) > 0){
			flag = 0;
		}
		return flag;
	}
	
	
	/**
	 * 添加
	 * 作者： 张叶
	 * 创建时间：2018年7月3日  下午3:57:17
	 */
	public int insert(ProxyQrCode pqc){
		pqc.setStatus("audit");
		int i = proxyQrCodeMapper.insert(pqc);
		return i;
	}
	
	
	public int updateRecommend(ProxyQrCode pqc){
		int flag = proxyQrCodeMapper.updateByPrimaryKey(pqc);
		return flag;
	}
	
	
	/**
	 * 审核通过
	 * 1，修改status为on
	 * 2，修改active为1
	 * 作者： 张叶
	 * 创建时间：2018年9月6日  下午3:19:33
	 */
	public int auditProxyQrCode(Long id, Admin a) {
		int flag = 1;
		ProxyQrCode pqc = proxyQrCodeMapper.selectByPrimaryKey(id);
		if (pqc != null && !"".equals(pqc)) {
			pqc.setStatus("on");
			if (a != null && !"".equals(a)) {
				pqc.setAuditAdminId(a.getId());
			}
			pqc.setAuditDate(new Date());
			if (proxyQrCodeMapper.updateByPrimaryKey(pqc) > 0) {
				flag = 0;
			}
		}
		return flag;
	}
	
	
	public Result createQrCode(Long id){
		Result result = new Result();
		ProxyQrCode p = proxyQrCodeMapper.selectByPrimaryKey(id);
		if(p != null && !"".equals(p)){
			p.setQrCode("https://ar.zhyell.com/api/QrCode/create/" + id);
			if(proxyQrCodeMapper.updateByPrimaryKey(p) > 0){
				result.code = 0;
				result.message = "生成成功";
			}else{
				result.code = 1;
				result.message = "系统错误，生成失败";
			}
		}else{
			result.code = 2;
			result.message = "该记录或已删除，请重试";
		}
		return result;
	}
}
